home *** CD-ROM | disk | FTP | other *** search
/ PC-X 1997 October / pcx14_9710.iso / swag / math.swg / 0096_Fibonacci for longints and comps.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-05-27  |  1.6 KB  |  114 lines

  1. {
  2. Fibonacci for longints and comps, GCD for longint, plus LCM
  3.  
  4.  
  5. Jud McCranie
  6. jud.mccranie@camcat.com
  7.  
  8. ================================================
  9. }
  10. function Fibonacci( n : word) : longint;
  11.  
  12. { Fibonacci numbers, by Jud McCranie. }
  13.  
  14. var i   : word;
  15.     f1, f2, fib : longint;
  16.  
  17. begin { ----- fibonacci ----- }
  18.  
  19. if n > 46 then
  20. begin
  21.   writeln( 'In Fibonicci - N is too large for a longint');
  22.   halt;
  23. end;
  24.  
  25. fib := 1;
  26. f1  := 1;
  27. f2  := 1;
  28.  
  29. for i := 3 to n do
  30. begin
  31.   fib := f1 + f2;
  32.   f2  := f1;
  33.   f1  := fib;
  34. end;
  35.  
  36. Fibonacci := fib;
  37.  
  38. end; { ----- fibonacci ----- }
  39.  
  40.  
  41.  
  42. function FibonacciComp( n : word) : comp;
  43.  
  44. { Fibonacci numbers, by Jud McCranie. }
  45.  
  46. var i   : word;
  47.     f1, f2, fib : comp;
  48.  
  49. begin { ----- fibonacci comp ----- }
  50.  
  51. if n > 92 then
  52. begin
  53.   writeln( 'In Fibonicci - N is too large for a comp');
  54.   halt;
  55. end;
  56.  
  57. fib := 1.0;
  58. f1  := 1.0;
  59. f2  := 1.0;
  60.  
  61. for i := 3 to n do
  62. begin
  63.   fib := f1 + f2;
  64.   f2  := f1;
  65.   f1  := fib;
  66. end;
  67.  
  68. FibonacciComp := fib;
  69.  
  70. end; { ----- fibonacci comp ----- }
  71.  
  72.  
  73. -------------------------------------------------
  74.  
  75. function GCD( u, v : LongInt) : LongInt;
  76.  
  77. { Greatest Common Divisor, by Jud McCranie }
  78.  
  79. var t : LongInt;
  80.  
  81. begin { --- gcd --- }
  82.  
  83. while v <> 0 do
  84. begin
  85.   t := u mod v;
  86.   u := v;
  87.   v := t;
  88. end;
  89.  
  90. GCD := u;
  91.  
  92. end; { --- GCD --- }
  93.  
  94.  
  95.  
  96. function LCM( x, y : LongInt) : LongInt;
  97.  
  98. { Least Common Multiple, by Jud McCranie }
  99.  
  100. begin { --- lcm --- }
  101.  
  102. LCM := (x div GCD( x, y)) * y;
  103.  
  104. end; { --- LCM --- }
  105.  
  106.  
  107.  
  108.  
  109.  
  110. Jud McCranie
  111.  
  112.  * Silver Xpress V4.02B03P SW20178
  113.  
  114.